import { func } from "vue-types";

export function splitAndValidateDomains(input: string): {
  valid: string[];
  invalid: string[];
} {
  // 使用正则表达式分割输入，逗号、空格或换行符都可以
  const parts: string[] = input.split(/[\s,\n]+/);

  // 域名规范的正则表达式
  const domainRegex = /^(?!-)(?:[a-zA-Z\d-]{1,63}[a-zA-Z\d]\.)+[a-zA-Z]{2,6}$/;

  // 检查每个部分是否符合域名规范
  const validDomains: string[] = parts.filter(part => domainRegex.test(part));

  // 找出不符合规范的部分
  const invalidDomains: string[] = parts.filter(
    part => !domainRegex.test(part)
  );

  // 返回一个对象，包含符合规范和不符合规范的结果
  return {
    valid: validDomains,
    invalid: invalidDomains
  };
}

export function splitAndValidateIpv4(input: string): {
  valid: string[];
  invalid: string[];
} {
  // 使用正则表达式分割输入，逗号、空格或换行符都可以
  const parts: string[] = input.split(/[\s,\n]+/);

  const ipRegex =
    /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

  // 检查每个部分是否符合域名规范
  const validIpv4: string[] = parts.filter(part => ipRegex.test(part));

  // 找出不符合规范的部分
  const invalidIpv4: string[] = parts.filter(part => !ipRegex.test(part));

  // 返回一个对象，包含符合规范和不符合规范的结果
  return {
    valid: validIpv4,
    invalid: invalidIpv4
  };
}

export function splitAndValidateIpv6(input: string): {
  valid: string[];
  invalid: string[];
} {
  // 使用正则表达式分割输入，逗号、空格或换行符都可以
  const parts: string[] = input.split(/[\s,\n]+/);

  const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;

  // 检查每个部分是否符合域名规范
  const validIpv6: string[] = parts.filter(part => ipv6Regex.test(part));

  // 找出不符合规范的部分
  const invalidIpv6: string[] = parts.filter(part => !ipv6Regex.test(part));

  // 返回一个对象，包含符合规范和不符合规范的结果
  return {
    valid: validIpv6,
    invalid: invalidIpv6
  };
}

export function transGMTToBeijing(val) {
  let date = new Date(val); // 格林尼治时间
  date = new Date(date.getTime() - 8 * 60 * 60 * 1000); // 转换为北京时间
  // date = new Date(date.getTime() + 8 * 60 * 60 * 1000); // 转换为北京时间

  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hours = date.getHours();
  const minutes = date.getMinutes();
  const seconds = date.getSeconds();

  const beijingDate = `${year}-${month.toString().padStart(2, "0")}-${day
    .toString()
    .padStart(2, "0")} ${hours.toString().padStart(2, "0")}:${minutes
    .toString()
    .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;

  console.log(beijingDate);
  return beijingDate;
}

export function transToBeijingNotReduce8(val) {
  let date = new Date(val); // 格林尼治时间
  date = new Date(date.getTime()); // 转换为北京时间
  // date = new Date(date.getTime() + 8 * 60 * 60 * 1000); // 转换为北京时间

  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hours = date.getHours();
  const minutes = date.getMinutes();
  const seconds = date.getSeconds();

  const beijingDate = `${year}-${month.toString().padStart(2, "0")}-${day
    .toString()
    .padStart(2, "0")}_${hours.toString().padStart(2, "0")}:${minutes
    .toString()
    .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;

  console.log(beijingDate);
  return beijingDate;
}
